This invention relates to secure communication techniques.
It is often desirable to transmit digital data from a source to one or more intended recipients in such a manner that the digital data can be recognized only by its intended recipients. Examples of instances where this is desirable include transmission of sensitive data (e.g., financial data, technical data, policy data) or software such as downloading an application program from the Internet, or retrieving a program or other data from a disk (e.g., optical or magnetic).
There are known techniques for secure data communication. Most of these techniques are classified as encryption/decryption techniques. In general, encryption techniques convert from one system of data formats to another sometimes by use of the source data to vary the conversion process. This conversion is performed in such a manner that given encryption information reconversion into the original form is possible by decryption.
A cryptographic transformation function takes data, e.g., symbols comprising a message in its original form, known as plaintext or plaintext symbols, and performs mathematical manipulations on the numerical representation of the message (either on a block or stream basis), transforming the message into ciphertext or cipertext symbols. Ciphertext is a representation of the original message which is unreadable, typically appearing as garbled text. Three types of cryptographic transformation functions which are used to convert plaintext to ciphertext are: secret key functions, public key functions, and hash functions.
Secret key functions employ directional encryption algorithms. A user selects a secret key which, along with the message to be encrypted, are the inputs to an algorithm. The resulting ciphertext is sent to a recipient where the recipient may be a person or a computer. To read the encrypted message, the recipient must know the user's secret key. Using the user's secret key and the ciphertext, as inputs to the same algorithm used to encrypt the message, the recipient is able to decrypt the message into plaintext and thus read the message sent by the user.
Encryption may also be accomplished by using a public key function. A public key function requires two keys, a public key and a private key for each user of the system. The public key for an individual user may be known by all other users of the system. The private key for the individual user should be known only by the individual user.
Hash functions unlike secret or public key are one-way encryption functions.
In the stream cipher technique, the symbols of the plaintext message are serially flowed through a stream ciphering system. The stream cipher system typically operates on the plaintext symbols using a key or random data to form a modulo sum.